const { api } = require('../../utils/api.js');

Page({
  data: {
    isLoading: false,
    hasToken: false,  // 标记是否已有token
    defaultAvatar: 'https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132',
    defaultNickname: '微信用户'
  },
  
  onLoad: function() {
    // 检查是否已登录
    const token = wx.getStorageSync('token');
    if (token) {
      wx.switchTab({
        url: '/pages/index/index'
      });
    }
  },
  
  // 处理登录
  handleLogin: function() {
    this.setData({ isLoading: true });
    
    wx.login({
      success: (res) => {
        if (res.code) {
          // 发送code到后端
          api.login(res.code).then(result => {
            // 存储token
            wx.setStorageSync('token', result.token);
            
            // 如果是新用户或没有用户信息，弹出授权窗口
            if (result.is_new_user || !result.user.nickname) {
              this.setData({ 
                hasToken: true,
                isLoading: false 
              });
              // 弹出授权窗口
              this.showAuthModal();
            } else {
              // 已有完整用户信息，直接跳转
              wx.switchTab({
                url: '/pages/index/index'
              });
            }
          }).catch(err => {
            console.error('登录失败', err);
            wx.showToast({
              title: '登录失败，请重试',
              icon: 'none'
            });
            this.setData({ isLoading: false });
          });
        } else {
          console.error('获取code失败', res.errMsg);
          wx.showToast({
            title: '登录失败，请重试',
            icon: 'none'
          });
          this.setData({ isLoading: false });
        }
      },
      fail: (err) => {
        console.error('wx.login调用失败', err);
        wx.showToast({
          title: '登录失败，请重试',
          icon: 'none'
        });
        this.setData({ isLoading: false });
      }
    });
  },
  
  // 显示授权弹窗
  showAuthModal: function() {
    wx.showModal({
      title: '完善个人资料',
      content: '为了更好的体验，请授权获取您的头像和昵称',
      confirmText: '授权获取',
      cancelText: '使用默认',
      success: (res) => {
        if (res.confirm) {
          // 用户选择授权获取
          this.getUserInfo();
        } else {
          // 用户选择使用默认
          this.useDefaultUserInfo();
        }
      }
    });
  },
  
  // 获取用户信息（用户主动点击）
  getUserInfo: function() {
    wx.getUserProfile({
      desc: '用于完善用户资料',
      success: (res) => {
        const userInfo = res.userInfo;
        
        // 更新用户信息到后端
        api.updateUserInfo(userInfo).then(() => {
          wx.showToast({
            title: '登录成功',
            icon: 'success'
          });
          // 延迟跳转，让用户看到成功提示
          setTimeout(() => {
            // 使用 reLaunch 确保首页重新加载
            wx.reLaunch({
              url: '/pages/index/index'
            });
          }, 1500);
        }).catch(err => {
          console.error('更新用户信息失败', err);
          wx.showToast({
            title: '获取用户信息失败',
            icon: 'none'
          });
          // 失败时使用默认信息
          this.useDefaultUserInfo();
        });
      },
      fail: (err) => {
        console.error('获取用户信息失败', err);
        if (err.errMsg.includes('getUserProfile:fail auth deny')) {
          wx.showModal({
            title: '授权失败',
            content: '您拒绝了授权，将使用默认头像和名称。是否重新授权？',
            confirmText: '重新授权',
            cancelText: '使用默认',
            success: (res) => {
              if (res.confirm) {
                this.getUserInfo();
              } else {
                this.useDefaultUserInfo();
              }
            }
          });
        } else {
          wx.showToast({
            title: '获取用户信息失败',
            icon: 'none'
          });
          // 其他错误时使用默认信息
          this.useDefaultUserInfo();
        }
      }
    });
  },
  
  // 使用默认用户信息
  useDefaultUserInfo: function() {
    const defaultUserInfo = {
      nickname: this.data.defaultNickname,
      avatarUrl: this.data.defaultAvatar
    };
    
    // 使用默认信息更新用户资料
    api.updateUserInfo(defaultUserInfo).then(() => {
      wx.showToast({
        title: '登录成功',
        icon: 'success'
      });
      // 延迟跳转
      setTimeout(() => {
        // 使用 reLaunch 确保首页重新加载
        wx.reLaunch({
          url: '/pages/index/index'
        });
      }, 1500);
    }).catch(err => {
      console.error('更新默认用户信息失败', err);
      // 即使失败也跳转
      wx.showToast({
        title: '登录成功',
        icon: 'success'
      });
      setTimeout(() => {
        // 使用 reLaunch 确保首页重新加载
        wx.reLaunch({
          url: '/pages/index/index'
        });
      }, 1500);
    });
  }
}); 